package cn.imvc.app.models;

import java.util.List;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;

import cn.imvc.app.entities.TypeClass;
import cn.imvc.app.entities.TypeValue;
import cn.imvc.app.repositories.TypeValueRepository;
import cn.imvc.data.domain.ViewRequest;
/**
 * 
 * @author zhanghy
 * @date 2016年8月11日上午11:28:39
 *
 */
@Service
public class TypeValueModelImpl implements TypeValueModel{

	@Autowired
	TypeValueRepository typeValueRepository;
	@Autowired
	RefRelationModel refRelationModel;
	
	public Page<TypeValue> find(ViewRequest viewRequest) {
		return typeValueRepository.findAll(viewRequest);
	}

	public int save(TypeClass typeClass, TypeValue typeValue) {
		
		TypeClass tc = typeValue.getTypeClass();
		String name = typeValue.getName();
		List<TypeValue> listName = typeValueRepository.getByTypeClassAndName(tc,name);
		if(listName.size()>0){
			return -1;
		}
		typeValueRepository.saveAndFlush(typeValue);
		return 1;
	}
 
	public int update(int id, TypeClass typeClass, TypeValue typeValue) {
		TypeValue loadTypeValue = typeValueRepository.getOne(id);
		TypeClass tc = typeValue.getTypeClass();
		String name = typeValue.getName();
		List<TypeValue> listName = typeValueRepository.getByTypeClassAndName(tc,name);
		if(listName.size()>0&&!name.equals(loadTypeValue.getName())){
			return -1;
		}
		BeanUtils.copyProperties(typeValue, loadTypeValue, new String[]{"id"});
		typeValueRepository.saveAndFlush(loadTypeValue);
		return 1;
	}
	
	public TypeValue get(int id) {
		return typeValueRepository.getOne(id);
	}

	public String delete(int id) {
		  String result = refRelationModel.deleteDateCheck("Type_Value", "id", id);
		    if(result.equals("")){
		    	typeValueRepository.delete(id);
		    	return "";
		    }else{
		    	return result;
		    }
	}

	public void deleteBatch(int[] ids) {
		for (int id : ids) {
			typeValueRepository.delete(id);
		}
		
	}



}
